import { SendMessageType } from '/@/config/DeclareGlobal';
import sendToUnity from '/@/core/communication/SendToUnity';

/**
 * 堆垛机数据对象结构
 * @typedef {Object} StackerData
 * @property {string} deviceID - 设备标识
 * @property {number} [taskRow] - 任务行
 * @property {number} [taskColumn] - 任务列
 * @property {number} [taskLevel] - 任务层
 * @property {number} [axisXActSpeed] - 行走电机转速 (RPM)
 * @property {number} [axisYActSpeed] - 提升电机转速 (RPM)
 * @property {number} [axisZActSpeed] - 货叉电机转速 (RPM)
 * @property {boolean} [isMoving] - 行走状态
 * @property {boolean} [isMoveInPosition] - 行走到位
 * @property {boolean} [isLifting] - 升降状态
 * @property {boolean} [isExtending] - 伸叉状态
 * @property {boolean} [isExtendComplete] - 伸叉完成
 * @property {boolean} [isTaskStarted] - 任务启动
 * @property {boolean} [isTaskFinished] - 任务完成
 * @property {number} [wheelDiameter] - 行走轮直径
 * @property {number} [liftDiameter] - 提升轮直径
 * @property {number} [forkDiameter] - 货叉轮直径
 * @property {number} [wheelGearRatio] - 行走减速比
 * @property {number} [liftGearRatio] - 升降减速比
 * @property {number} [forkGearRatio] - 货叉减速比
 * @property {number} [moveSpeed] - 行走线速度
 * @property {number} [forkVerticalSpeed] - 提升线速度
 * @property {number} [forkExtendSpeed] - 货叉线速度
 */

// 当前环境模式
let isWebGL = true; // 默认使用WebGL模式

/**
 * 设置当前环境模式
 * @param {boolean} webGLMode - 是否为WebGL模式
 */
export const setStackerEnvironmentMode = (webGLMode) => {
  isWebGL = webGLMode;
};

/**
 * 发送堆垛机数据到Unity
 * @param {StackerData} data - 堆垛机数据对象
 */
export const sendStackerData = (data) => {
  const message = {
    type: SendMessageType.StackerData, // StackerData = 10
    platform: 0, // Platform.web2unity
  };

  // 根据当前模式设置data格式
  if (isWebGL) {
    // WebGL模式 - 发送对象
    message['data'] = data;
  } else {
    // Unity模式 - 发送字符串
    message['data'] = JSON.stringify(data);
  }

  sendToUnity.send(message);
};

/**
 * 模拟发送堆垛机数据
 */
export const simulateStackerData = () => {
  // 测试数据对象
  const testData = {
    deviceID: "STACKER-001",
    taskRow: 1,
    taskColumn: 2,
    taskLevel: 3,
    axisXActSpeed: 1500,
    axisYActSpeed: 1200,
    axisZActSpeed: 800,
    isMoving: true,
    isMoveInPosition: false,
    isLifting: false,
    isExtending: false,
    isExtendComplete: false,
    isTaskStarted: true,
    isTaskFinished: false,
    wheelDiameter: 0.280,
    liftDiameter: 0.350,
    forkDiameter: 0.060,
    wheelGearRatio: 17,
    liftGearRatio: 57,
    forkGearRatio: 15,
    moveSpeed: 1.2,
    forkVerticalSpeed: 0.8,
    forkExtendSpeed: 0.3
  };

  sendStackerData(testData);
  console.log('已发送堆垛机测试数据', testData);
};